﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;

namespace RooHui.Tool
{
    public class ImagePlug
    {
        public static void SaveAndZoom(System.Web.HttpPostedFileBase postedFile, string savePath)
        {
            //创建目录  
            string dir = Path.GetDirectoryName(savePath);
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            //原始图片（获取原始图片创建对象，并使用流中嵌入的颜色管理信息）  
            System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream, true);

            double zoomHeight = 600;
            double zoomWidth = 800;
            if (initImage.Width < initImage.Height)
            {
                //如果是平的。要求save width:800 height:600; 
                //否则 width:600 height: 800
                zoomHeight = 800;
                zoomWidth = 600;
            }

            //缩略图宽、高计算  
            double newWidth = initImage.Width;
            double newHeight = initImage.Height;
            //宽大于高或宽等于高（横图或正方）  
            if (initImage.Width > initImage.Height || initImage.Width == initImage.Height)
            {
                //如果宽大于模版  
                if (initImage.Width > zoomWidth)
                {
                    //宽按模版，高按比例缩放  
                    newWidth = zoomWidth;
                    newHeight = initImage.Height * (zoomWidth / initImage.Width);
                }
            }
            //高大于宽（竖图）  
            else
            {
                //如果高大于模版  
                if (initImage.Height > zoomHeight)
                {
                    //高按模版，宽按比例缩放  
                    newHeight = zoomHeight;
                    newWidth = initImage.Width * (zoomHeight / initImage.Height);
                }
            }
            //生成新图  
            //新建一个bmp图片  
            System.Drawing.Image newImage = new System.Drawing.Bitmap((int)newWidth, (int)newHeight);
            //新建一个画板  
            System.Drawing.Graphics newG = System.Drawing.Graphics.FromImage(newImage);
            //设置质量  
            newG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            newG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            //置背景色  
            newG.Clear(Color.White);
            //画图  
            newG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, newImage.Width, newImage.Height), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);

            //保存缩略图                  
            newImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);

            //释放资源  
            newG.Dispose();
            newImage.Dispose();
            initImage.Dispose();
        }
    }
}
